/* * Copyright (C) 2021 Huawei Device Co., Ltd.
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.zhouyou.http.demo.slice;

import com.zhouyou.http.demo.ResourceTable;
import com.zhouyou.http.demo.UploadAbility;
import com.zhouyou.http.model.utils.EventHelper;
import com.zhouyou.http.demo.view.HorizontalProgressDialog;
import ohos.aafwk.ability.delegation.AbilityDelegatorRegistry;
import ohos.aafwk.ability.delegation.IAbilityDelegator;
import ohos.agp.components.Button;
import ohos.agp.utils.TextTool;
import ohos.app.Context;
import org.junit.After;
import org.junit.Test;

import static org.junit.Assert.*;

public class UploadAbilitySliceTest {
    private static IAbilityDelegator sAbilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator();
    long longTime = 4000;
    long shortTime = 2000;

    @After
    public void tearDown() throws Exception {
        EventHelper.clearAbilities();
        Thread.sleep(2000);
    }

    @Test
    public void onUploadFile() {

        Context context = sAbilityDelegator.getAppContext();
        UploadAbility uploadAbility = EventHelper.startAbility(UploadAbility.class);
        sleep(shortTime);
        UploadAbilitySlice uploadAbilitySlice = new UploadAbilitySlice();
        sAbilityDelegator.doAbilitySliceStart(uploadAbility, uploadAbilitySlice);
        Button button = (Button) uploadAbilitySlice.findComponentById(ResourceTable.Id_btn_uploade_file);
        EventHelper.triggerClickEvent(uploadAbility, button);
        sleep(longTime);
        String result = uploadAbilitySlice.getResult();

        HorizontalProgressDialog dialog = uploadAbilitySlice.getDialog();

        assertTrue("dialog is show!!!!", !dialog.isShowing());
        sleep(5000);

        assertTrue(" result is empty!!!!", !TextTool.isNullOrEmpty(result));

        sAbilityDelegator.stopAbility(uploadAbility);
    }

    @Test
    public void onUploadInputStream() {

        Context context = sAbilityDelegator.getAppContext();
        UploadAbility uploadAbility = EventHelper.startAbility(UploadAbility.class);
        sleep(shortTime);
        UploadAbilitySlice uploadAbilitySlice = new UploadAbilitySlice();
        sAbilityDelegator.doAbilitySliceStart(uploadAbility, uploadAbilitySlice);
        sleep(shortTime);
        Button button = (Button) uploadAbilitySlice.findComponentById(ResourceTable.Id_btn_updload_inputstream);
        EventHelper.triggerClickEvent(uploadAbility, button);
        sleep(longTime);
        String result = uploadAbilitySlice.getResult();
        assertTrue(" result is empty!!!!", !result.isEmpty());
        sAbilityDelegator.stopAbility(uploadAbility);
    }
    @Test
    public void onUploadBytes() {
        Context context = sAbilityDelegator.getAppContext();
        UploadAbility uploadAbility = EventHelper.startAbility(UploadAbility.class);
        sleep(shortTime);

        UploadAbilitySlice uploadAbilitySlice = new UploadAbilitySlice();
        sAbilityDelegator.doAbilitySliceStart(uploadAbility, uploadAbilitySlice);
        sleep(shortTime);
        Button button = (Button) uploadAbilitySlice.findComponentById(ResourceTable.Id_btn_upload_bytes);
        EventHelper.triggerClickEvent(uploadAbility, button);
        sleep(longTime);

        String result = uploadAbilitySlice.getResult();
        assertTrue(" result is empty!!!!", !result.isEmpty());

        sAbilityDelegator.stopAbility(uploadAbility);

    }


    @Test
    public void onUploadFileMaps2() {
        Context context = sAbilityDelegator.getAppContext();
        UploadAbility uploadAbility = EventHelper.startAbility(UploadAbility.class);
        sleep(shortTime);
        UploadAbilitySlice uploadAbilitySlice = new UploadAbilitySlice();
        sAbilityDelegator.doAbilitySliceStart(uploadAbility, uploadAbilitySlice);
        Button button = (Button) uploadAbilitySlice.findComponentById(ResourceTable.Id_btn_upload_file_map2);
        EventHelper.triggerClickEvent(uploadAbility, button);
        sleep(longTime);
        String result = uploadAbilitySlice.getResult();
        assertTrue(" result is empty!!!!", !result.isEmpty());
        sAbilityDelegator.stopAbility(uploadAbility);
    }

    @Test
    public void onUploadOne() {


        Context context = sAbilityDelegator.getAppContext();
        UploadAbility uploadAbility = EventHelper.startAbility(UploadAbility.class);
        sleep(shortTime);
        UploadAbilitySlice uploadAbilitySlice = new UploadAbilitySlice();
        sAbilityDelegator.doAbilitySliceStart(uploadAbility, uploadAbilitySlice);
        sleep(shortTime);
        Button button = (Button) uploadAbilitySlice.findComponentById(ResourceTable.Id_btn_upload_one);
        EventHelper.triggerClickEvent(uploadAbility, button);
        sleep(longTime);
        String result = uploadAbilitySlice.getResult();
        assertTrue(" result is empty!!!!", !result.isEmpty());

        sAbilityDelegator.stopAbility(uploadAbility);

    }


    private void sleep(long time) {
        try {
            Thread.sleep(time);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}